/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.zapateriaLes.bl;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.zapateriaLes.Enum.EstadoTerminado;
import mx.its.dsw2.zapateriaLes.dao.CategoriaDaoLocal;
import mx.its.dsw2.zapateriaLes.dao.CategoriaDeProductoDaoLocal;
import mx.its.dsw2.zapateriaLes.modelo.Categoria;
import mx.its.dsw2.zapateriaLes.modelo.CategoriaDeProducto;
import mx.its.dsw2.zapateriaLes.modelo.Productos;

/**
 *
 * @author lesly
 */
@Stateless
public class CategoriaBl implements CategoriaBlLocal {
    @EJB
    private CategoriaDeProductoDaoLocal categoriaDeProductoDao;
    @EJB
    private CategoriaDaoLocal categoriaDao;
    

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

     @Override
    public EstadoTerminado register(Categoria category) {
        if( categoriaDao.findDuplicity(category)){
           return EstadoTerminado.INCOMPLETE;
    //NADA
    }else{
categoriaDao.create(category);
return EstadoTerminado.COMPLETE;
} 
    }

    @Override
    public EstadoTerminado modify(Categoria category) {
        if(category.getId()==null || categoriaDao.find(category.getId())==null){
        return EstadoTerminado.INCOMPLETE;
        }else{
            categoriaDao.edit(category);
        return EstadoTerminado.COMPLETE;
        }
    }

    @Override
    public EstadoTerminado delete(Categoria category) {
           if(category.getId()==null || categoriaDao.find(category.getId())==null){
        return EstadoTerminado.INCOMPLETE;
        }else{
            categoriaDao.remove(category);
        return EstadoTerminado.COMPLETE;
        }
    }

    @Override
    public List<Categoria> getAll() {
        return categoriaDao.findAll();
    }
     @Override
    public Categoria findById(int idCategoria) {
        return categoriaDao.find(idCategoria);
    }

    @Override
    public List<Categoria> obtenerListaPorProducto(Productos producto) {
        List<CategoriaDeProducto> lista=categoriaDeProductoDao.getByProducto(producto);
        List<Categoria> listaFinal=new ArrayList<Categoria>();
        for(CategoriaDeProducto cdp: lista){
        listaFinal.add(cdp.getIdCategoria());
        }
        return listaFinal;
    }
    
}